//获取数据库对应的模块
var MongoClient = require('mongodb').MongoClient;
//数据库地址
var url = 'mongodb://localhost:27017';

//封装数据连接操作
function _connect(callback){
    MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
        if (err) throw err;
        console.log("数据库已创建")
        //db指连接成功的数据
        callback(db)
    })
}
//插入数据
module.exports.insert=function(dbname,col,obj,res,callback1){
    _connect(function(db1){
        //插入多个数据的时候只能是数组的形式
        if(obj instanceof Array){
            obj=obj
        }else{
            obj=[obj]
        }
        db1.db(dbname).collection(col).insertMany(obj,function(err,result){
            if(err)throw err;
            console.log("插入的文档数量为："+result.insertedCount);        
            db1.close();
            callback1(result);
            // res.send('数据插入成功');
        })
    })
}

module.exports.find=function(dbname,col,obj1,callback1,mysort1,m1,n1){
    var l=arguments.length;
    _connect((db1)=>{
        var obj={};
        var mysort={};
        var m=0;
        var n=0;
        if(isNaN(m1)){m1=0}
	    if(isNaN(n1)){n1=0}
        //如果用户不输入条件的话要自己书写默认值
        if(l==3){

        }else if(l==4){
            obj=obj1
        }else if(l==5){
            obj=obj1;
            mysort=mysort1;
        }else if(l==6){
            obj=obj1;
            mysort=mysort1;
            m=parseInt(m1);
        }else if(l==7){
            obj=obj1;
            mysort=mysort1;
            m=parseInt(m1);
            n=parseInt(n1);
        }
        //obj代表查询条件,如果为空代表所有数据
        //sort进行排序{条件：1/-1}1升序 -1降序 如果没有条件代表正常加载
        //limit(n))限制条数n
        //skip(m)跳过m
        db1.db(dbname).collection(col).find(obj).sort(mysort).skip(m).limit(n).toArray(function(err,result){
            if(err) throw err;
            // console.log(result)
            db1.close();
            callback1(result)
        })
    })
}

//修改密码
module.exports.update=function(dbname,col,whereStr,updateStr1,res,callback1){
    _connect(function(db1){
        var updateStr = {$set: updateStr1};
        db1.db(dbname).collection(col).updateOne(whereStr, updateStr, function(err, result) {
            if (err) throw err;
            console.log("文档更新成功");
            db1.close();
            callback1(result)
            // res.send('数据修改成功了')
        });
    })
}

//删除数据
module.exports.delete=function(dbname,col,whereStr,res){
    _connect(function(db1){
        db1.db(dbname).collection(col).deleteOne(whereStr, function(err, obj) {
            if (err) throw err;
            console.log("文档删除成功");
            db1.close();
            res.send('删除数据成功了')
        });
    })
}